package com.sidom.movieIndexer.service.clean;

import java.util.List;
import java.util.Set;

import com.sidom.movieIndexer.domain.Movie;
import com.sidom.movieIndexer.domain.file.MovieFile;

/**
 * The high-level Clean up business interface.
 *
 * <p>Overview:<br>
 * <li>Cleans up file names using strategies defined in the strategy package</li>.
 *
 * @author Siebe
 */
public interface CleanUpService {
	/**
	 * Cleans up all the {@link Movie#getName()} of every {@link Movie} in the {@link List}.
	 * @param movies A {@link List} of {@link Movie}s
	 * @return A {@link List} of {@link Movie}s with {@link MovieFile#getCleanedFileName()} information filled in.
	 */
	List<Movie> cleanUpMovies(List<Movie> movies);
	
	/**
	 * Cleans up all the {@link Movie#getName()} of every {@link Movie} in the {@link List}.
	 * Extra parameter wordsToRemove. Define a {@link Set} of words that should be removed from the {@link Movie#getName()}.
	 * @param movies A {@link List} of {@link Movie}s
	 * @param wordsToRemove A {@link Set} of words that should be removed from the {@link Movie#getName()}.
	 * @return A {@link List} of {@link Movie}s with {@link MovieFile#getCleanedFileName()} information filled in.
	 */
	List<Movie> cleanUpMovies(List<Movie> movies, Set<String> wordsToRemove);
}
